{
  /****************　数组扩展 ********************/

  Array.prototype.add = function(item) {
    this.push(item);
  }

  Array.prototype.addRange = function(items) {
    var length = items.length;

    if (length != 0) {
      for (var index = 0; index < length; index++) {
        this.push(items[index]);
      }
    }
  }

  Array.prototype.clear = function() {
    if (this.length > 0) {
      this.splice(0, this.length);
    }
  }

  Array.prototype.isEmpty = function() {
    if (this.length == 0)
      return true;
    else
      return false;
  }

  Array.prototype.clone = function() {
    var clonedArray = [];
    var length = this.length;

    for (var index = 0; index < length; index++) {
      clonedArray[index] = this[index];
    }

    return clonedArray;
  }

  Array.prototype.contains = function(item) {
    var index = this.indexOf(item);
    return (index >= 0);
  }

  Array.prototype.dequeue = function() {
    return this.shift();
  }

  Array.prototype.indexOf = function(item) {
    var length = this.length;

    if (length != 0) {
      for (var index = 0; index < length; index++) {
        if (this[index] == item) {
          return index;
        }
      }
    }

    return -1;
  }

  Array.prototype.insert = function(index, item) {
    this.splice(index, 0, item);
  }

  Array.prototype.joinstr = function(str) {
    var new_arr = new Array(this.length);
    for (var i = 0; i < this.length; i++) {
      new_arr[i] = this[i] + str
    }
    return new_arr;
  }

  Array.prototype.queue = function(item) {
    this.push(item);
  }

  Array.prototype.remove = function(item) {
    var index = this.indexOf(item);

    if (index >= 0) {
      this.splice(index, 1);
    }
  }

  Array.prototype.removeAt = function(index) {
    this.splice(index, 1);
  }
}
